<template>
  <div :class="prefixCls" class="relative h-full w-full px-4">
    <div class="absolute right-4 top-4 flex items-center">
      <AppDarkModeToggle class="mr-2 enter-x" v-if="!sessionTimeout" />
      <AppLocalePicker
        class="text-white enter-x xl:text-gray-600"
        :show-text="false"
        v-if="!sessionTimeout && showLocale"
      />
    </div>

    <!-- <span class="-enter-x xl:hidden">
      <AppLogo :alwaysShowTitle="true" />
    </span> -->
    <span class="-enter-x">
      <AppLogo :always-show-title="true" />
    </span>

    <div class="container relative mx-auto h-full py-2 sm:px-10">
      <div class="flex h-full">
        <div class="mr-4 hidden min-h-full pl-4 xl:flex xl:w-6/12 xl:flex-col">
          <!-- <AppLogo class="-enter-x" /> -->
          <div class="my-auto">
            <img :alt="appTitle" src="../../../assets/svg/login-box-bg.svg" class="-mt-16 w-1/2 -enter-x" />
            <div class="mt-10 font-medium text-white -enter-x dark:text-gray-500">
              <span class="mt-4 inline-block text-3xl"> {{ appDescription }}</span>
            </div>
            <div class="mt-5 font-normal text-white -enter-x dark:text-gray-500">
              {{ appSubdescription }}
            </div>
          </div>
        </div>
        <div class="flex h-full w-full py-5 xl:my-0 xl:h-auto xl:w-6/12 xl:py-0">
          <div
            :class="`${prefixCls}-form`"
            class="relative mx-auto my-auto w-full rounded-md px-5 py-8 shadow-md enter-x sm:w-3/4 sm:px-8 lg:w-2/4 xl:ml-16 xl:w-auto xl:bg-transparent xl:p-4 xl:shadow-none"
          >
            <LoginForm />
            <ForgetPasswordForm />
            <RegisterForm />
            <RegisterResultForm />
            <MobileForm />
            <QrCodeForm />
            <SendConfirmEmailForm />
            <ConfirmPhoneForm />
            <ConfirmResultForm />
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script lang="ts" setup>
  import { computed } from 'vue';

  import { AppDarkModeToggle, AppLocalePicker, AppLogo } from '@/components/Application';
  // import { useGlobSetting } from '@/hooks/setting';
  import { useDesign } from '@/hooks/web/useDesign';
  // import { useI18n } from '@/hooks/web/useI18n';
  import { useLocaleStore } from '@/store/modules/locale';
  import { usePreferenceStore } from '@/store/modules/preference';

  import ConfirmPhoneForm from './ConfirmPhoneForm.vue';
  import ConfirmResultForm from './ConfirmResultForm.vue';
  import ForgetPasswordForm from './ForgetPasswordForm.vue';
  import LoginForm from './LoginForm.vue';
  import MobileForm from './MobileForm.vue';
  import QrCodeForm from './QrCodeForm.vue';
  import RegisterForm from './RegisterForm.vue';
  import RegisterResultForm from './RegisterResultForm.vue';
  import SendConfirmEmailForm from './SendConfirmEmailForm.vue';

  defineProps({
    sessionTimeout: {
      type: Boolean,
    },
  });

  // const globSetting = useGlobSetting();
  const { prefixCls } = useDesign('login');
  // const { t } = useI18n();
  const localeStore = useLocaleStore();
  const showLocale = localeStore.getShowPicker;
  // const title = computed(() => globSetting?.title ?? '');
  const preferenceStore = usePreferenceStore();
  const appTitle = computed(() => preferenceStore.getAppTitle ?? '');
  const appDescription = computed(() => preferenceStore.getAppDescription ?? '');
  const appSubdescription = computed(() => preferenceStore.getAppSubdescription ?? '');
</script>
<style lang="scss">
  $prefix-cls: #{$namespace}-login;
  $logo-prefix-cls: #{$namespace}-app-logo;
  $countdown-prefix-cls: #{$namespace}-countdown-input;
  $captcha-prefix-cls: #{$namespace}-captcha-input;
  $dark-bg: #293146;

  html[data-theme='dark'] {
    .#{$prefix-cls} {
      background-color: $dark-bg;

      &::before {
        background-image: url('@/assets/svg/login-bg-dark.svg');
      }

      .ant-input,
      .ant-input-password,
      .ant-input-affix-wrapper,
      .ant-checkbox-inner {
        background-color: #232a3b;
      }

      .ant-btn:not(.ant-btn-link, .ant-btn-primary) {
        border: 1px solid #4a5569;
      }

      &-form {
        background: transparent !important;
      }

      .app-iconify {
        color: #fff;
      }

      input.fix-auto-fill,
      .fix-auto-fill input {
        // -webkit-text-fill-color: #c9d1d9 !important;
        box-shadow: inherit !important;
      }

      .ant-divider-inner-text {
        font-size: 12px;
        color: $text-color-secondary;
      }
    }
  }

  .#{$prefix-cls} {
    min-height: 100%;
    overflow: hidden;

    @media (max-width: $screen-xl) {
      background-color: #293146;

      .#{$prefix-cls}-form {
        background-color: #fff;
      }
    }

    &::before {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      margin-left: -48%;
      content: '';
      background-image: url('@/assets/svg/login-bg.svg');
      background-repeat: no-repeat;
      background-position: 100%;
      background-size: auto 100%;

      @media (max-width: $screen-xl) {
        display: none;
      }
    }

    .#{$logo-prefix-cls} {
      position: absolute;
      top: 12px;
      height: 30px;

      &__title {
        font-size: 16px;
        color: #fff;
      }

      img {
        width: 32px;
      }
    }

    .container {
      .#{$logo-prefix-cls} {
        display: flex;
        width: 60%;
        height: 80px;

        &__title {
          font-size: 24px;
          color: #fff;
        }

        img {
          width: 48px;
        }
      }
    }

    &-sign-in-way {
      .anticon {
        font-size: 22px;
        color: #888;
        cursor: pointer;

        &:hover {
          color: $primary-color;
        }
      }
    }

    input:not([type='checkbox']) {
      min-width: 360px;

      @media (max-width: $screen-xl) {
        min-width: 320px;
      }

      @media (max-width: $screen-lg) {
        min-width: 260px;
      }

      @media (max-width: $screen-md) {
        min-width: 240px;
      }

      @media (max-width: $screen-sm) {
        min-width: 160px;
      }
    }

    .#{$countdown-prefix-cls} input {
      min-width: unset;
    }
  }
</style>
